﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business_Entity;
using Business_Logic;

namespace PetSoft.GUI.RRHH
{
    public partial class GUIBuscarEmpleado : Form
    {
    	private List<BEEmpleado> lista;
    	private List<BEEmpleado> seleccionados;
    	private BEEmpleado empleado;
		private int colCheck;
		private int colN;
    	
		private int tipoVentana = 0;
		
        public GUIBuscarEmpleado()
        {
            InitializeComponent();
            this.lista = null;
			this.colCheck = 0;
			this.colN = 9;
			
			this.resultadosDGV.CellDoubleClick += new DataGridViewCellEventHandler(this.doubleClickResultadosDGV);
			this.cargoCB.Items.AddRange(new object[] {
									"<Seleccionar>"});
			this.cargoCB.Text = "<Seleccionar>";
			
			this.nombreTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			this.apPaternoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			this.apMaternoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			this.docIdentidadTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);
        }
        
        public GUIBuscarEmpleado(int tipoVentana){
        	this.tipoVentana = tipoVentana;
        	InitializeComponent();
            this.lista = null;
			this.colCheck = 0;
			this.colN = 9;
			
			this.resultadosDGV.CellDoubleClick += new DataGridViewCellEventHandler(this.doubleClickResultadosDGV);
			this.cargoCB.Items.AddRange(new object[] {
									"<Seleccionar>"});
			this.cargoCB.Text = "<Seleccionar>";
			
			this.nombreTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			this.apPaternoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			this.apMaternoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			this.docIdentidadTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);			
        }
        
        void buscarClick(object sender, EventArgs e)
        {
	       	try
			{
				resultadosDGV.Rows.Clear();
				BLEmpleado bl = new BLEmpleado();
				List<BEEmpleado> be = new List<BEEmpleado>();
				
				List<String> datos = new List<String>();
				datos.Add(nombreTB.Text);
				datos.Add(apPaternoTB.Text);
				datos.Add(apMaternoTB.Text);
				datos.Add(areaCB.Text);
				datos.Add(cargoCB.Text);
				datos.Add(docIdentidadTB.Text);
				datos.Add(sexoCB.Text);
				for (int i=0; i<datos.Count; i++)
				{
					if ((datos[i] == null) || (datos[i] == "<Seleccionar>"))
						datos[i] = "";
				}
				if(tipoVentana == 1){
					be = bl.buscarAdministrador(datos[0], datos[1], datos[2], datos[3], datos[4], datos[5],
				                       datos[6]);
				}else{
					be = bl.buscarEmpleado(datos[0], datos[1], datos[2], datos[3], datos[4], datos[5],
				                       datos[6]);
				}
				if (be != null)
				{
					this.resultadosDGV.AllowUserToAddRows = true;
					this.lista = be;
					this.resultadosDGV.Rows.Clear();
					for (int j=0; j<be.Count; j++)
					{
						string[] fila = null;
						fila = new string[]{
									false.ToString(),
									be[j].IdEmpleado.ToString(),
						            be[j].Nombre,
						            be[j].ApPaterno,
						            be[j].ApMaterno,
						            be[j].Area,
						            be[j].Cargo,
						            be[j].DocIdentidad,
						            be[j].Sexo,
						            j.ToString()
						            };
						this.resultadosDGV.Rows.Add(fila);
					}
					this.resultadosDGV.AllowUserToAddRows = false;
					if (this.resultadosDGV.Rows.Count == 1)
						this.nroResultadosLB.Text = "Cantidad de Empleados encontrados: " + this.resultadosDGV.Rows.Count;
					else if (this.resultadosDGV.Rows.Count == 0)
						this.nroResultadosLB.Text = "Cantidad de Empleados encontrados: 0";
					else if (this.resultadosDGV.Rows.Count > 1)
						this.nroResultadosLB.Text = "Cantidad de Empleados encontrados: " + this.resultadosDGV.Rows.Count;
				}
				else
				{
					this.nroResultadosLB.Text = "Cantidad de Empleados encontrados: 0";
					//MessageBox.Show("No se han hallado resultados","Aviso");
				}
			}
			catch
			{
			}
        	
        }
        
        void aceptarClick(object sender, EventArgs e)
        {
        	try{
				int cont = 0;
				int aux = 0;
				int pos = 0;
				foreach (DataGridViewRow fila in resultadosDGV.Rows)
				{
					if (fila.Cells[this.colCheck].Value != null && bool.Parse(fila.Cells[this.colCheck].Value.ToString()))
					{
						cont++;
						pos = aux;
					}
					aux++;
				}
				if (cont == 0)
				{
					MessageBox.Show("Seleccione un empleado.","Aviso",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);	
				}
				else if (cont == 1)
				{				
					DataGridViewRow fila = resultadosDGV.Rows[pos];
					if (fila.Cells[this.colCheck].Value != null && bool.Parse(fila.Cells[this.colCheck].Value.ToString()))
					{
						if (this.lista != null){
							this.empleado = lista[int.Parse(fila.Cells[this.colN].Value.ToString())];
							this.Close();
						}
					cont++;
					}
				}
				else if (cont > 1)
				{
					MessageBox.Show("Seleccione sólo un empleado","Aviso",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);		
				}
			}
			catch
			{
			}
        }

        void habilitarCargo(object sender, EventArgs e)
        {
			try
			{
	        	if (areaCB.Text != "<Seleccionar>")
	        	{
	        		this.sexoCB.Text = "<Seleccionar>";
	        		
	        		this.cargoCB.Enabled = true;
	        		this.cargoCB.Items.Clear();
	        		this.cargoCB.Items.AddRange(new object[] {
										"<Seleccionar>"});
	        		
	        		BLCargo bl = new BLCargo();
	        		  		 
	        		List<BECargo> lista = bl.obtenerCargo(this.areaCB.Text);
	        		
	        		if (lista != null)
		        	{
	        			for(int i=0; i<lista.Count; i++)
	        				this.cargoCB.Items.Add(lista[i].Descripcion);
	        			this.cargoCB.Text = "<Seleccionar>";
		        	}
		        	else
		        	{
		        		//MessageBox.Show("Error cargando datos de la BD","Error");
		        	}
		        }
	        	else
	        	{
	        		this.cargoCB.Enabled = false;
	        	}
			}
			catch
			{
			}
        }
        
		void doubleClickResultadosDGV(object sender, DataGridViewCellEventArgs e)
		{
			try{
				if (resultadosDGV.Rows.Count > 0)
				{
					if ((e.RowIndex != -1) && (e.ColumnIndex != -1))
					{
						foreach (DataGridViewRow fila in this.resultadosDGV.SelectedRows)
						{
							if ((fila.Cells[this.colCheck].Value != null) && !(bool.Parse(fila.Cells[this.colCheck].Value.ToString())))
								fila.Cells[this.colCheck].Value = bool.Parse(true.ToString());
							else if ((fila.Cells[this.colCheck].Value != null) && (bool.Parse(fila.Cells[this.colCheck].Value.ToString())))
								fila.Cells[this.colCheck].Value = bool.Parse(false.ToString());
						}
					}
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
        void GUIBuscarEmpleadoLoad(object sender, EventArgs e)
        {
        	try
			{
	        	this.sexoCB.Text = "<Seleccionar>";
				BLArea bl = new BLArea();
	  	
	        	List<BEArea> lista = bl.obtenerArea();
	   	
	          	if (lista != null)
	        	{
	          		for(int i=0; i<lista.Count; i++)
	        			this.areaCB.Items.Add(lista[i].Descripcion);
	          		this.areaCB.Text = "<Seleccionar>";
	        	}
	        	else
	        	{
	        		//MessageBox.Show("Error cargando datos de la BD","Error");
	        	}
			}
			catch
			{
			}
        }
                
        public List<BEEmpleado> Seleccionados
        {
            get { return seleccionados; }
            set { seleccionados = value; }
        }
                
        public BEEmpleado Empleado
        {
            get { return empleado; }
            set { empleado = value; }
        }
        
        void LimpiarBTNClick(object sender, EventArgs e)
        {
        	this.nombreTB.Text = "";
        	this.apPaternoTB.Text = "";
        	this.apMaternoTB.Text = "";
        	this.areaCB.Text = "<Seleccionar>";
        	this.cargoCB.Text = "<Seleccionar>";
        	this.docIdentidadTB.Text = "";
        	this.sexoCB.Text = "<Seleccionar>";
        }
    }
}
